﻿#define PI
#define DEBUG
#define VC_V10

namespace ConsoleApp1.demo;

// 预处理指令是一把双刃剑，虽然强大，但需谨慎使用。
// 适度使用：过度使用条件编译会使代码可读性急剧下降，难以理解和调试。应优先考虑使用运行时配置（如 appsettings.json）或依赖注入（DI）来管理不同环境的行为

public class p14_preprocessor_directives
{
    public static void Test1()
    {
        #if (PI)
            Console.WriteLine("PI is defined");
        #else
            Console.WriteLine("PI is not defined");
        #endif
    }

    public static void Test2()
    {
        #if (DEBUG && !VC_V10)
            Console.WriteLine("DEBUG is defined");
        #elif (!DEBUG && VC_V10)
            Console.WriteLine("VC_V10 is defined");
        #elif (DEBUG && VC_V10)
            Console.WriteLine("DEBUG and VC_V10 are defined");
        #else
            Console.WriteLine("DEBUG and VC_V10 are not defined");
        #endif
    }
}